import axios from 'axios'
import { Promise } from 'core-js'
import { Message } from 'element-ui'

// 环境变量： process.env.NODE_ENV # 当为production时为生产环境 为development时为开发环境
// 环境文件： .env.development 、 .env.production

// 创建一个 axios 的实例（这样就可以创建多个实例）
const service = axios.create({
  baseURL: process.env.VUE_APP_BASE_API,
  timeout: 5000
})

// 请求到服务器前的拦截，对入参和请求头请求公共参数配置项的处理...
service.interceptors.request.use()

// 服务器返回后的数据处理，数据异常 和 数据结构问题...
service.interceptors.response.use(response => {
  const { data, message, success } = response.data
  // 成功
  if (success) {
    return data
  }
  debugger
  // 业务失败、提示错误信息
  Message.error(message)
  // 业务已经错误了 还能进then ? 不能 ！ 返回一个 Promise.reject 应该进 catch 里面
  return Promise.reject(new Error(message))
}, error => {
  // 提示错误信息
  Message.error(error.message)
  // 失败了，返回一个 Promise.reject 这样进入 catch 里面
  return Promise.reject(error)
})

export default service
